1. Field of the Invention
The present invention relates generally to storage area networks.
2. Description of the Related Art
The management of information is becoming an increasingly daunting task in today's environment of data intensive industries and applications. More particularly, the management of raw data storage is becoming more cumbersome and difficult as more companies and individuals are faced with larger and larger amounts of data that must be effectively, efficiently, and reliably maintained. Entities continue to face the necessity of adding more storage, servicing more users, and providing access to more data for larger numbers of users.
The concept of storage area networks or SAN's has gained popularity in recent years to meet these increasing demands. Although various definitions of a SAN exist, a SAN can generally be considered a network whose primary purpose is the transfer of data between computer systems and storage elements and among storage elements. A SAN can form an essentially independent network that does not have the same bandwidth limitations as many of its direct-connect counterparts including storage devices connected directly to servers (e.g., with a SCSI connection) and storage devices added directly to a local area network (LAN) using traditional Ethernet interfaces, for example.
In a SAN environment, targets, which can include storage devices (e.g., tape drives and RAID arrays) and other devices capable of storing data, and initiators, which can included servers, personal computing devices, and other devices capable of providing write commands and requests, are generally interconnected via various switches and/or appliances. The connections to the switches and appliances are usually Fibre Channel. This structure generally allows for any initiator on the SAN to communicate with any target and vice versa. It also provides alternative paths from initiator to target. In other words, if a particular initiator is slow or completely unavailable, another initiator on the SAN can provide access to the target. A SAN also makes it possible to mirror data, making multiple copies available and thus creating more reliability in the availability of data. When more storage is needed, additional storage devices can be added to the SAN without the need to be connected to a specific initiator, rather, the new devices can simply be added to the storage network and can be accessed from any point.
Some SAN's utilize appliances to perform storage management for the SAN. A typical appliance may receive and store data within the appliance, then, with an internal processor for example, analyze and operate on the data in order to forward the data to the appropriate target(s). Such store-and-forward processing can slow down data access, including the times for reading data from and writing data to the storage device(s).
While appliances can perform switching operations, switches are often used to connect initiators with appliances, given the large number of initiators and small number of ports included in many appliances. In more current SAN implementations, switches have replaced certain functionality previously preformed by appliances such that appliances are not necessary and can be eliminated from the systems.
SANs, typically through switches and/or appliances, perform virtualization functions to allocate space of one or more physical targets to a particular user with the physical space remaining unknown to the user. For example, a company may utilize a SAN to provide data storage that employees access for data storage and retrieval. A engineering department, for example, may have storage allocated as “engineering storage space.” The employees may see and interact with the virtual space as they would see or interact with a physical storage device such as an attached hard disk drive. Nevertheless, the space may actually be divided over multiple physical storage devices and even be fragmented within single storage devices. A switch or appliance can receive a request for a virtual space and block number(s) and determine the device(s) and portions thereof that physically correlate to the virtual space requested in order to direct the data accordingly.
More recent storage area network switches are capable of routing data between initiators and targets without buffering the data as required by earlier appliances used in SAN's. For example, some storage switches can route data packets without introducing more latency to the packets than would be introduced by a typical network switch. Such unbuffered data transfer between initiators and targets must be handled reliably and efficiently by the switch performing the interconnection. An example of a storage switch can be found in co-pending U.S. patent application Ser. No. 10/051,396, entitled VIRTUALIZATION IN A STORAGE SYSTEM, filed Jan. 18, 2002.
For example, an important feature of SANs is the ability to reliably and efficiently store data in multiple targets or within multiple logical units of one or more targets through so called mirroring or use of a mirrored virtual target. Some networks may include a storage area (or virtual target) that maintains multiple copies of data in one or more physical locations for increased reliability of data storage. Accordingly, a switch in such a network may route data to two storage devices, for example, in response to a request to write data to the storage area. Typically, physical targets are only able to handle a limited number of transfer requests at a given time. When routing data to be mirrored using a buffered approach, data packets may be maintained in the connecting device until each target is able to receive the data. If the data is to be written to two physical devices for example, data may be written to the first device at a first time when the first device is available and to a second device at a second time when the second device is available. Accordingly, in a buffered implementation, a switch can receive a write command for a virtual target and simply route it to the appropriate physical device(s) without first determining the availability of a transfer ready resource. Since the data is buffered in the switch, it can be routed to the individual physical devices as they return a transfer ready signal.
Unbuffered data transfer between servers and targets, however, can present further obstacles to the switches routing such data. If not properly managed, a network or portion thereof can become deadlocked while attempting to write the data. In an unbuffered approach, data packets are not maintained or buffered at the connecting device when routing data in operations such as mirroring operations. Accordingly, each target for which data is destined must be available to receive the data before the data is requested or sent from the initiating device. For example, a connecting device may wait to receive transfer ready signals from each target before issuing a transfer ready signal to the initiating device. Because of each target's limited ability to issue transfer ready signals, the switch and targets can become deadlocked waiting for either transfer ready resources or data packets.
For example, a switch may issue a first write command (e.g., write A) to a first and second target and a second write command (e.g., write B) to the same first and second target. If each target only includes a single transfer ready resource, and the first target issues its only available transfer ready signal in response to the write A command while the second target issues its only available transfer ready signal in response to the write B command, the switch and targets can become deadlocked. The first target can only issue a transfer ready signal for the write B command after receiving data for the write A command (since its only resource is allocated to the write A command). The second target can only issue a transfer ready signal for the write A command after receiving data for the write B command. Each target, however, will not receive data in response to its issued transfer ready signal and thus, will not issue a transfer ready signal for the remaining command.
The switch can not provide a transfer ready signal to the initiator for the write A command until it receives a transfer ready signal for the write A command from the second target. Additionally, the switch can not provide a transfer ready signal for the write B command to the initiator until it receives a transfer ready signal for the write B command. Thus, the initiator won't provide data for the write A or write B command to the switch and no data will be routed to the targets. Thus, the switch and targets will become deadlocked. Each target will wait for data packets in response to its issued transfer ready signal and the switch will wait for a transfer ready signal from each target.
Accordingly, a system and method for managing the limited transfer ready resources of physical targets is needed.